extends Resource
class_name AttributeSet

## 有属性被改变时发出
signal attribute_changed()


## [AttributeSet] 的名称
@export var attribute_set_name:String

## 属性字典，为 [AttributeSet] 添加 [Attribute] 时必须以此为参考，
## 不必将字典中的所有属性都加入 [AttributeSet]
@export var attribute_dictionary:AttributeDictionary

## 该 [AttributeSet] 包含的 Attribute
@export var attributes:Array[Attribute]:
	set(value):
		attributes = value


# 根据名称设置base_value,返回布尔值
func set_attribute_base_value(effect_attribute_name:String,value:float) -> bool:
	var attribute_to_effect = get_attribute_by_name(effect_attribute_name)
	if attribute_to_effect:
		attribute_to_effect.base_value = value
		return true
	return false

# 根据名称设置current_value,返回布尔值
func set_attribute_current_value(effect_attribute_name:String,value:float) -> bool:
	var attribute_to_effect = get_attribute_by_name(effect_attribute_name)
	if attribute_to_effect:
		attribute_to_effect.current_value = value
		return true
	return false

# 根据属性名称获取属性
func get_attribute_by_name(name:String) -> Attribute:
	for a in attributes:
		if name == a.attribute_name:
			return a
	return null
